﻿using System;
using System.Web.UI.WebControls;
using Enums;
using Vallejos.Entidades.Enums;
using Vallejos.Negocio;
using Vallejos.Entidades.ModeloDeDatos;

public partial class Productos_Administracion_BusquedaProductos : System.Web.UI.Page
{
    private const string PaginaDeModificacion = "ModificacionProductos.aspx";

    #region "Eventos De Pagina"
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack){
            CargarRangos();
            CargarCombos();
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];

        var producto = new Producto();

        if (ddlConcesionaria.SelectedIndex != 0)
            producto.Concesionaria = new Concesionaria { Id = Convert.ToInt32(ddlConcesionaria.SelectedValue) };

        producto.Titulo = txtTitulo.Text;

        if (ddlTipo.SelectedIndex != 0)
            producto.TipoDeProducto = new TipoProducto { idTipo = (IdTipoProducto)ddlTipo.SelectedIndex };

        if (ddlUso.SelectedIndex != 0)
            producto.Uso = new UsoDeProducto { idUso = (IdUsoDeProducto)ddlUso.SelectedIndex };

        if (ddlMarca.SelectedIndex != 0)
            producto.Marca = new Marca { Id = Convert.ToInt32(ddlMarca.SelectedValue) };

        if (ddlModelo.SelectedIndex != 0)
            producto.Modelo = new Modelo { Id = Convert.ToInt32(ddlModelo.SelectedValue) };

        var desde = Convert.ToInt32(txtDel.Text);
        var hasta = Convert.ToInt32(txtAl.Text);

        gvProductos.DataSource = negocio.BuscarProductos(producto, desde, hasta);
        gvProductos.DataBind();
    }
    protected void btnAltaProducto_Click(object sender, EventArgs e)
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        negocio.AlmacenarEntidadEnEdicion<Producto>(null);
        Response.Redirect(PaginaDeModificacion);
    }
    protected void gvProductos_SelectedIndexChanged(object sender, EventArgs e)
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        var idProducto = Convert.ToInt32(((GridView)sender).SelectedValue);
        negocio.AlmacenarEntidadEnEdicion(negocio.LeerProducto(idProducto));

        Response.Redirect(PaginaDeModificacion);
    }
    protected void ddlMarca_SelectedIndexChanged(object sender, EventArgs e)
    {
        CargarModelos(Convert.ToInt32(((DropDownList)sender).SelectedValue));
    }
    #endregion

    #region "Metodos Privados"
    private void CargarRangos()
    {
        txtDel.Text = DateTime.Now.Year.ToString();
        txtAl.Text = DateTime.Now.Year.ToString();

        txtDel_NumericUpDownExtender.Maximum = DateTime.Now.Year;
        txtAl_NumericUpDownExtender.Maximum = DateTime.Now.Year;
    }
    #endregion

    #region Combos
    private void CargarCombos()
    {
        CargarMarcas();
        CargarTiposProducto();
        CargarUsosDeProducto();
        Cargarconcesionarias();
    }
    private void CargarMarcas()
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        HelperUI.CargarLista(ddlMarca, negocio.LeerMarcas(),
            "Id", "Nombre");
        CargarModelos(0);
    }
    private void Cargarconcesionarias()
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        HelperUI.CargarLista(ddlConcesionaria, negocio.LeerConcesionarias(),
            "Id", "RazonSocialNombre");
    }


    private void CargarTiposProducto()
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        HelperUI.CargarLista(ddlTipo, negocio.LeerTiposProducto(),
            "idTipo", "Nombre");
    }

    private void CargarUsosDeProducto()
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        HelperUI.CargarLista(ddlUso, negocio.LeerUsosDeProducto(),
            "idUso", "Nombre");
    }


    private void CargarModelos(int idMarca)
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        HelperUI.CargarLista(ddlModelo, negocio.LeerModelos(idMarca),
            "Id", "Nombre");
    }
    #endregion

}